package com.nuaa.shopping.vo;

import java.util.ArrayList;
import java.util.List;

import com.nuaa.shopping.entity.Item;
import com.nuaa.shopping.entity.Product;
import com.nuaa.shopping.exception.ProductNotExistsException;
import com.nuaa.shopping.service.ProductService;
import com.nuaa.shopping.service.impl.ProductServiceImpl;

/*
 * 购物车
 */
public class Cart {
	private List<Item> items = new ArrayList<Item>();

	private ProductService productService = new ProductServiceImpl();

	public List<Item> getItems() {
		return items;
	}

	public void setItems(List<Item> items) {
		this.items = items;
	}

	/*
	 * 添加商品到购物车
	 */
	public void add(int id) throws ProductNotExistsException {
		Product product = productService.findById(id);

		// 判断是否存在该商品
		if (product == null) {
			throw new ProductNotExistsException("商品不存在！");
		}

		// 判断是否购买过此商品
		for (Item item : items) {
			if (item.getProduct().getId() == id) {
				item.setNum(item.getNum() + 1); // 修改数量
				item.setPrice(item.getProduct().getPrice() * item.getNum()); // 修改明细价格
				return;
			}
		}
		
		// 如果从未购买过此商品，创建一个新的明细
		Item item = new Item();
		item.setProduct(product);
		item.setNum(1);
		item.setPrice(product.getPrice());
		items.add(item);
	}

	/*
	 * 从购物车删除商品
	 */
	public void removeById(int id){
		for(int i=0;i<items.size();i++){
			Item item = items.get(i);
			if(item.getProduct().getId() == id){
				items.remove(item);
				break;
			}
		}
	}

	/*
	 * 修改指定商品数量
	 */
	public void modifyNum(int id,int num){
		for(int i=0;i<items.size();i++){
			Item item = items.get(i);
			if(item.getProduct().getId() == id){
				item.setNum(num); // 修改数量
				item.setPrice(item.getProduct().getPrice()*item.getNum()); // 修改明细价格
				break;
			}
		}
	}
	
	/*
	 * 清空购物车
	 */
	public void clear(){
		items.clear();
	}

}
